package com.baor.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baor.dao.ScriptDao;
import com.baor.domain.ScriptVO;
import com.baor.service.ScriptService;
import com.baor.util.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

@Service
public class ScriptServiceImpl implements ScriptService {
    @Override
    public R scriptUpdate(Map<String, Object> params) {
        try {
            // 从参数中获取话术ID、内容和状态
            Integer id = Integer.parseInt(params.get("id").toString());
            String details = params.get("details").toString();
            Integer status = Integer.parseInt(params.get("status").toString());

            // 查询话术是否存在
            ScriptVO script = scriptDao.selectById(id);
            if (script == null) {
                return R.er("话术不存在");
            }

            // 更新话术内容和状态
            script.setDetails(details);
            script.setStatus(status);
            // 执行更新操作
            int rows = scriptDao.updateById(script);
            if (rows > 0) {
                return R.ok("更新成功");
            } else {
                return R.er("更新失败");
            }
        } catch (Exception e) {
            e.printStackTrace();
            return R.er("更新异常：" + e.getMessage());
        }
    }

    @Override
    public R scriptAdd(Map<String, Object> params) {
        try {
            // 从参数中获取话术内容和状态
            String details = params.get("details").toString();
            Integer status = Integer.parseInt(params.get("status").toString());
            // 创建新的话术对象
            ScriptVO script = new ScriptVO();
            script.setDetails(details);
            script.setStatus(status);
            // 设置添加时间（格式为yyyy-MM-dd HH:mm:ss）
            script.setAddtime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));

            // 执行添加操作
            int rows = scriptDao.insert(script);
            if (rows > 0) {
                return R.ok("添加成功");
            } else {
                return R.er("添加失败");
            }
        } catch (Exception e) {
            e.printStackTrace();
            return R.er("添加异常：" + e.getMessage());
        }
    }
    @Autowired
    private ScriptDao scriptDao;

    @Override
    public R scriptList(Map<String, Object> params) {
        try {
            // 获取分页参数
            int pageIndex = params.get("pageIndex") != null ? Integer.parseInt(params.get("pageIndex").toString()) : 1;
            int pageSize = params.get("pageSize") != null ? Integer.parseInt(params.get("pageSize").toString()) : 10;
            // 构建分页对象
            Page<ScriptVO> page = new Page<>(pageIndex, pageSize);
            // 构建查询条件
            QueryWrapper<ScriptVO> queryWrapper = new QueryWrapper<>();
            // 状态筛选
            if (params.get("status") != null) {
                queryWrapper.eq("status", params.get("status"));
            }
            // 按添加时间倒序
            queryWrapper.orderByDesc("addtime");
            // 执行分页查询
            IPage<ScriptVO> resultPage = scriptDao.selectPage(page, queryWrapper);
            // 封装结果
            Map<String, Object> result = new HashMap<>();
            result.put("list", resultPage.getRecords());
            result.put("totalSize", resultPage.getTotal());
//            result.put("pages", resultPage.getPages());
            result.put("pageIndex", pageIndex);
            result.put("pageSize", pageSize);

            return R.ok(result);
        } catch (Exception e) {
            e.printStackTrace();
            return R.er("查询话术列表失败: " + e.getMessage());
        }
    }
}